#ifndef _INC_RAYTRACER_SHAPE
#define _INC_RAYTRACER_SHAPE

#include "Structures.h"

class Plane
{
public:
    Plane( Point3 widthVector, double width,
              Point3 lengthVector, double length,
              Point3 center);
    void getIntercept( Point3 startPoint,
                        Point3 direction,
                        double * interceptTime,
                        Point3 * interceptPoint,
                        Point3 * interceptNormal );

private:
    Point3 m_normal;
    Point3 m_center;
    Point3 m_width;
    Point3 m_length;
    double m_maxWidth;
    double m_maxLength;
    double m_planeD;
};

//TODO circle plane

class Sphere
{
public:
    Sphere( Point3 center, double radius );
    void getIntercept( Point3 startPoint,
                        Point3 direction,
                        double * interceptTime,
                        Point3 * interceptPoint,
                        Point3 * interceptNormal );
private:
    Point3 m_center;
    double m_radius;
};

#endif